# 导入 Starlette 应用类
from starlette.applications import Starlette

# 导入中间件类
from starlette.middleware import Middleware

# 导入 CORS 中间件
from starlette.middleware.cors import CORSMiddleware


# 定义启动事件处理函数
async def startup_event():
    # 应用启动时的初始化逻辑
    print("应用启动中...")


# 定义关闭事件处理函数
async def shutdown_event():
    # 应用关闭时的清理逻辑
    print("应用关闭中...")


# 创建 Starlette 应用实例
app = Starlette(
    # 启用调试模式
    debug=True,
    # 路由列表（稍后定义）
    routes=[],
    # 中间件列表
    middleware=[
        # 配置 CORS 中间件，允许所有来源
        Middleware(CORSMiddleware, allow_origins=["*"])
    ],
    # 启动事件列表
    on_startup=[startup_event],
    # 关闭事件列表
    on_shutdown=[shutdown_event],
)


# 定义主函数
def main():
    # 导入 uvicorn 服务器
    import uvicorn

    # 启动应用服务器
    uvicorn.run(app, host="127.0.0.1", port=8000)


# 脚本入口
if __name__ == "__main__":
    main()
